package com.relytosoft.mizar.media.analyze.services.service.structure;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.relytosoft.dubhe.common.core.base.page.PageQuery;
import com.relytosoft.mizar.media.analyze.api.entity.structure.AyStructureDisposition;
import com.relytosoft.mizar.media.analyze.api.pojo.dto.AyStruControlVehicleDto;
import com.relytosoft.mizar.media.analyze.api.pojo.dto.AyStructureDispositionDto;
import com.relytosoft.mizar.media.analyze.api.pojo.query.AyStructureDispositionQuery;
import com.relytosoft.mizar.media.analyze.api.pojo.vo.AyBatchVo;
import com.relytosoft.mizar.media.analyze.api.pojo.vo.AyStrucDispositionVo;

import java.util.List;

/**
 * @Author: zyc
 * @version: v1.0
 * @description: com.relytosoft.mizar.analyze.structure.services.service
 * @Date: 2022/5/18 14:14
 */
public interface AyStructureDispositionService extends IService<AyStructureDisposition> {

    /**
     * 分页查询结构化布控任务列表
     * @param pageQuery
     * @param ayStructureDispositionQuery
     * @return
     */
    IPage<AyStrucDispositionVo> selectStruDispositionPageList(PageQuery pageQuery, AyStructureDispositionQuery ayStructureDispositionQuery);

    /**
     * 添加结构化布控任务
     *
     * @param
     */
    AyBatchVo insertAyStructureDisposition(AyStructureDispositionDto dispositionDto);

    /**
     * 结构化布防详情
     *
     * @param id 结构化布防ID
     * @return 结构化布防详情
     */
    AyStructureDisposition getAyStructureDispositionById(Integer id);


    /**
     * 修改结构化
     *
     * @param dispositionDto
     */
    AyBatchVo updateAyStructureDisposition(AyStructureDispositionDto dispositionDto);


    /**
     * 删除结构化布控
     *
     */
    AyBatchVo deleteAyStructureDisposition(List<Integer> dispositionIds);

    /**
     * 启动布控任务
     *
     * @param
     */
    AyBatchVo startStructureDisposition(List<Integer> dispositionIds);


    /**
     * 停止布控任务
     *
     * @param
     */
    AyBatchVo stopStructureDisposition(List<Integer> dispositionIds);

    /**
     * 布防/撤防
     */
    boolean armedAndDisarmed(List<Integer> dispositionIds);

    /**
     * 设置临时白名单
     */
    boolean updateTempVehicleGroup(AyStruControlVehicleDto ayStructureDispositionDto);

    /**
     * 更新车辆库布控任务信息至redis
     * @param disposition
     */
    void createRedis(AyStructureDisposition disposition);

    /**
     * 更新车辆库布控任务信息至redis
     * @param disposition
     */
    void deleteRedis(AyStructureDisposition disposition);
}
